![]() |
![]() |
![]() | |
![]() ![]() ![]() ![]()
╤σ≥σΓ√σ ∩≡ΦδεµσφΦ |
└∩δσ≥ ShowChart╧ε∩≡εß≤σ∞ ≥σ∩σ≡ⁿ φα ∩≡αΩ≥ΦΩσ ∩≡Φ∞σφΦ≥ⁿ ≥σ⌡φεδεπΦ■ ∩σ≡σΣα≈Φ ⌠αΘδεΓ Φτ Ωα≥αδεπα ±σ≡Γσ≡α Web Γ α∩δσ≥ Σδ δεΩαδⁿφεΘ εß≡αßε≥ΩΦ. ═α°σ ±δσΣ≤■∙σσ ∩≡ΦδεµσφΦσ ± φατΓαφΦσ∞ ShowChart ∩εδ≤≈ασ≥ φσßεδⁿ°εΘ ≥σΩ±≥εΓ√Θ ⌠αΘδ ± Φ±⌡εΣφ√∞Φ Σαφφ√∞Φ Σδ ∩ε±≥≡εσφΦ Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√, ±εΣσ≡µΦ∞εσ Ωε≥ε≡επε ∩≡σΣ±≥αΓδσφε φΦµσ: 10,20,5,35,11,10,3,6,80,10,20,5,35,11,10,3,6,80 ┬ ²≥ε∞ ⌠αΘδσ φα⌡εΣ ≥± ≈Φ±δσφφ√σ τφα≈σφΦ ≤πδεΓ Σδ ε≥Σσδⁿφ√⌡ ±σΩ≥ε≡εΓ ΣΦαπ≡α∞∞√, ∩≡Φ≈σ∞ ±≤∞∞α ²≥Φ⌡ τφα≈σφΦΘ ≡αΓφα 360 π≡αΣ≤±α∞. ═α° α∩δσ≥ ∩≡ΦφΦ∞ασ≥ ²≥ε≥ ⌠αΘδ ≈σ≡στ ±σ≥ⁿ Φ ≡Φ±≤σ≥ Ω≡≤πεΓ≤■ ΣΦαπ≡α∞∞≤, ∩εΩαταφφ≤■ φα ≡Φ±. 2. ╨Φ±. 2. ╩≡≤πεΓα ΣΦαπ≡α∞∞α, ∩ε±≥≡εσφφα φα ßατσ Φ±⌡εΣφ√⌡ Σαφφ√⌡, ∩εδ≤≈σφφ√⌡ ≈σ≡στ ±σ≥ⁿ ╘αΘδ Φ±⌡εΣφ√⌡ Σαφφ√⌡ ταφΦ∞ασ≥ Γ±σπε 49 ßαΘ≥, ∩ε²≥ε∞≤ εφ ∩σ≡σΣασ≥± ∩ε ±σ≥Φ ε≈σφⁿ ß√±≥≡ε. ┼±δΦ ß√ ∞√ ∩σ≡σΣαΓαδΦ π≡α⌠Φ≈σ±Ωεσ Φτεß≡αµσφΦσ ²≥εΘ ΣΦαπ≡α∞∞√, ±≥α≥Φ≈σ±Ωεσ ΦδΦ ΣΦφα∞Φ≈σ±Ωεσ, ∩εΣπε≥εΓδσφφεσ, φα∩≡Φ∞σ≡, ≡α±°Φ≡σφΦσ∞ ±σ≡Γσ≡α CGI ΦδΦ ISAPI, εß·σ∞ ∩σ≡σΣαΓασ∞√⌡ ∩ε ±σ≥Φ Σαφφ√⌡ ß√δ ß√ φα∞φεπε ßεδⁿ°σ. ╚±⌡εΣφ√σ ≥σΩ±≥√ α∩δσ≥α ShowChart╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ ShowChart ∩≡ΦΓσΣσφ Γ δΦ±≥Φφπσ 1. ╦Φ±≥Φφπ 1. ╘αΘδ ShowChart.java import java.applet.*; import java.awt.*; import java.net.*; import java.io.*; import java.util.*; public class ShowChart extends Applet { URL SrcURL; Object URLContent; int errno = 0; String str; byte buf[] = new byte[200]; public String getAppletInfo() { return "Name: ShowChart"; } public void init() { try { SrcURL = new URL( "http://frolov/chart.txt"); try { InputStream is = SrcURL.openStream(); is.read(buf); str = new String(buf, 0); } catch (IOException ioe) { showStatus("read exception"); errno = 1; } } catch (MalformedURLException uex) { showStatus( "MalformedURLException exception"); errno = 2; } } public void paint(Graphics g) { Integer AngleFromChart = new Integer(0); int PrevAngle = 0; int rColor, gColor, bColor; Dimension dimAppWndDimension = getSize(); g.setColor(Color.yellow); g.fillRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); g.setColor(Color.black); g.drawRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); showStatus(str); StringTokenizer st = new StringTokenizer(str, ",\r\n"); while(st.hasMoreElements()) { rColor = (int)(255 * Math.random()); gColor = (int)(255 * Math.random()); bColor = (int)(255 * Math.random()); g.setColor(new Color(rColor, gColor, bColor)); String angle = (String)st.nextElement(); AngleFromChart = new Integer(angle) ; g.fillArc(0, 0, 200, 200, PrevAngle, AngleFromChart.intValue()); PrevAngle += AngleFromChart.intValue(); } } } ╚±⌡εΣφ√Θ ≥σΩ±≥ ΣεΩ≤∞σφ≥α HTML, ±ετΣαφφεπε αΓ≥ε∞α≥Φ≈σ±ΩΦ Σδ φα°σπε α∩δσ≥α, ∩≡σΣ±≥αΓδσφ Γ δΦ±≥Φφπσ 2. ╦Φ±≥Φφπ 2. ╘αΘδ ShowChart.tmp.html <applet name="ShowChart" code="ShowChart" codebase= "file:/e:/Sun/Articles/vol12/src/ShowChart" width="200" height="200" align="Top" alt="If you had a java-enabled browser, you would see an applet here."> <hr>If your browser recognized the applet tag, you would see an applet here. <hr> </applet> ╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α α∩δσ≥α ShowChart└∩δσ≥ ShowChart ∩εδ≤≈ασ≥ ±εΣσ≡µΦ∞εσ ⌠αΘδα Φ±⌡εΣφ√⌡ Σαφφ√⌡ Σδ ∩ε±≥≡εσφΦ Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√ ± ∩ε∞ε∙ⁿ■ Ωδα±±α URL. ╩αΩ Γ√ ≤ΓΦΣΦ≥σ, Σδ ∩εδ≤≈σφΦ ±εΣσ≡µΦ∞επε ²≥επε ⌠αΘδα εφε ±ετΣασ≥ ∩ε≥εΩ ΓΓεΣα Γφ√∞ εß≡ατε∞. ╧εδ Ωδα±±α ShowChart┬ Ωδα±±σ ShowChart ε∩≡σΣσδσφ√ ∩ ≥ⁿ ∩εδσΘ. URL SrcURL; Object URLContent; int errno = 0; String str; byte buf[] = new byte[200]; ╧εδσ SrcURL Ωδα±±α URL ⌡≡αφΦ≥ αΣ≡σ± URL ⌠αΘδα Φ±⌡εΣφ√⌡ Σαφφ√⌡ Σδ Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√. ┬ ∩εδσ URLContent ≥Φ∩α Object ß≤Σσ≥ ∩σ≡σ∩Φ±αφε ±εΣσ≡µΦ∞εσ ²≥επε ⌠αΘδα. ┬ ∩εδσ errno ⌡≡αφΦ≥± ≥σΩ≤∙ΦΘ ΩεΣ ε°ΦßΩΦ, σ±δΦ εφα ΓετφΦΩδα, ΦδΦ φ≤δσΓεσ τφα≈σφΦσ, σ±δΦ Γ±σ ε∩σ≡α÷ΦΦ ß√δΦ Γ√∩εδφσφ√ ßστ ε°ΦßεΩ. ╧εδσ str ⌡≡αφΦ≥ ∩≡Φφ ≥≤■ ±≥≡εΩ≤, Ωε≥ε≡α ∩≡σΣΓα≡Φ≥σδⁿφε τα∩Φ±√Γασ≥± Γε Γ≡σ∞σφφ√Θ ß≤⌠σ≡ buf. ╠σ≥εΣ init┬ε Γ≡σ∞ ΦφΦ÷ΦαδΦτα÷ΦΦ ∞σ≥εΣ init ±ετΣασ≥ εß·σΩ≥ Ωδα±±α URL Σδ ⌠αΘδα Φ±⌡εΣφ√⌡ Σαφφ√⌡: SrcURL = new URL("http://frolov/chart.txt"); ╟Σσ±ⁿ Σδ ≤∩≡ε∙σφΦ Φ±⌡εΣφεπε ≥σΩ±≥α ∞√ ≤ΩαταδΦ αΣ≡σ± URL ⌠αΘδα Σαφφ√⌡ φσ∩ε±≡σΣ±≥Γσφφε Γ ∩≡επ≡α∞∞σ, εΣφαΩε Γ√ ∞εµσ≥σ ∩σ≡σΣα≥ⁿ ²≥ε≥ αΣ≡σ± α∩δσ≥≤ ≈σ≡στ ∩α≡α∞σ≥≡ Γ ΣεΩ≤∞σφ≥σ HTML. ─αδσσ Σδ φα°σπε εß·σΩ≥α URL ∞√ ±ετΣασ∞ ∩ε≥εΩ ΓΓεΣα Φ ∩εδ≤≈ασ∞ ±εΣσ≡µΦ∞εσ ⌠αΘδα (≥ε σ±≥ⁿ Φ±⌡εΣφ√σ Σαφφ√σ Σδ ∩ε±≥≡εσφΦ ΣΦαπ≡α∞∞√): InputStream is = SrcURL.openStream(); is.read(buf); ╧≡Φφ ≥√σ Σαφφ√σ τα∩Φ±√Γα■≥± Γ ß≤⌠σ≡ buf Φ τα≥σ∞ ∩≡σεß≡ατ≤■≥± Ω ≥Φ∩≤ String ± ∩ε∞ε∙ⁿ■ ±εε≥Γσ≥±≥Γ≤■∙σπε Ωεφ±≥≡≤Ω≥ε≡α: str = new String(buf, 0); ┼±δΦ ∩≡Φ ±ετΣαφΦΦ εß·σΩ≥α Ωδα±±α URL ΓετφΦΩδε Φ±Ωδ■≈σφΦσ, ∞σ≥εΣ init τα∩Φ±√Γασ≥ Γ ∩εδσ errno ΩεΣ ε°ΦßΩΦ, ≡αΓφ√Θ 2, τα∩Φ±√Γα ∩≡Φ ²≥ε∞ Γ ±≥≡εΩ≤ ±ε±≥ε φΦ ß≡α≤τσ≡α ±εεß∙σφΦσ "MalformedURLException exception". ┬ ≥ε∞ ±δ≤≈ασ, ΩεπΣα εß·σΩ≥ Ωδα±±α URL ±ετΣαφ ≤±∩σ°φε, α Φ±Ωδ■≈σφΦσ ΓετφΦΩδε Γ ∩≡ε÷σ±±σ ≈≥σφΦ ±εΣσ≡µΦ∞επε ⌠αΘδα, Γ ∩εδσ errno τα∩Φ±√Γασ≥± τφα≈σφΦσ 1, α Γ ±≥≡εΩ≤ ±ε±≥ε φΦ ß≡α≤τσ≡α - ±εεß∙σφΦσ "read exception". ╠σ≥εΣ paint╧ε±δσ ≡α±Ω≡α°ΦΓαφΦ ⌠εφα εΩφα α∩δσ≥α Φ ≡Φ±εΓαφΦ ΓεΩ≡≤π φσπε ≡α∞ΩΦ ∞σ≥εΣ paint ∩≡Φ±≥≤∩ασ≥ Ω ∩ε±≥≡εσφΦ■ Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√. ╧≡Φφ ≥√σ Σαφφ√σ ε≥εß≡αµα■≥± Γ ±≥≡εΩσ ±ε±≥ε φΦ ß≡α≤τσ≡α: showStatus(sChart); ─αδσσ ±ετΣασ≥± ≡ατßε≡∙ΦΩ ±≥≡εΩΦ Φ±⌡εΣφ√⌡ Σαφφ√⌡: StringTokenizer st = new StringTokenizer(sChart, ",\r\n"); ┬ Ωα≈σ±≥Γσ ≡ατΣσδΦ≥σδσΘ Σδ ²≥επε ≡ατßε≡∙ΦΩα ≤Ωατ√Γασ≥± τα∩ ≥α , ±Φ∞Γεδ ΓετΓ≡α≥α Ωα≡σ≥ΩΦ Φ ∩σ≡σΓεΣα ±≥≡εΩΦ. ╨Φ±εΓαφΦσ ±σΩ≥ε≡εΓ ΣΦαπ≡α∞∞√ Γ√∩εδφ σ≥± Γ ÷ΦΩδσ, ≤±δεΓΦσ∞ Γ√⌡εΣα Φτ Ωε≥ε≡επε Γδ σ≥± ταΓσ≡°σφΦσ ≡ατßε≡α ±≥≡εΩΦ Φ±⌡εΣφ√⌡ Σαφφ√⌡: while(st.hasMoreElements()) { . . . } ─δ ≥επε ≈≥εß√ ±σΩ≥ε≡√ ΣΦαπ≡α∞∞√ φσ ±δΦΓαδΦ±ⁿ, εφΦ Σεδµφ√ Φ∞σ≥ⁿ ≡ατφ√Θ ÷Γσ≥. ╓Γσ≥ ±σΩ≥ε≡α ∞εµφε ß√δε ß√ ∩σ≡σΣαΓα≥ⁿ Γ∞σ±≥σ ±ε τφα≈σφΦσ∞ ≤πδα ≈σ≡στ ⌠αΘδ Φ±⌡εΣφ√⌡ Σαφφ√⌡, εΣφαΩε ∞√ ∩≡Φ∞σφΦδΦ ßεδσσ ∩≡ε±≥εΘ ±∩ε±εß ≡α±Ωα≡°ΦΓαφΦ ±σΩ≥ε≡εΓ - Γ ±δ≤≈αΘφ√σ ÷Γσ≥α. ╠√ ∩εδ≤≈ασ∞ ±δ≤≈αΘφ√σ Ωε∞∩εφσφ≥√ ÷Γσ≥α ±σΩ≥ε≡α, α τα≥σ∞ Γ√ßΦ≡ασ∞ ÷Γσ≥ Γ Ωεφ≥σΩ±≥ ε≥εß≡αµσφΦ : rColor = (int)(255 * Math.random()); gColor = (int)(255 * Math.random()); bColor = (int)(255 * Math.random()); g.setColor(new Color(rColor, gColor, bColor)); ╤ ∩ε∞ε∙ⁿ■ ∞σ≥εΣα nextElement ∞√ ∩εδ≤≈ασ∞ ε≈σ≡σΣφεσ τφα≈σφΦσ ≤πδα ±σΩ≥ε≡α Φ ±ε⌡≡αφ σ∞ σπε Γ ∩σ≡σ∞σφφεΘ angle: String angle = (String)st.nextElement(); ─αδσσ ± ∩ε∞ε∙ⁿ■ Ωεφ±≥≡≤Ω≥ε≡α Ωδα±±α Integer ²≥ε τφα≈σφΦσ ∩≡σεß≡ατ≤σ≥± Γ ≈Φ±δσφφεσ: AngleFromChart = new Integer(angle); ╨Φ±εΓαφΦσ ±σΩ≥ε≡α Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√ Γ√∩εδφ σ≥± ± ∩ε∞ε∙ⁿ■ ∞σ≥εΣα fillArc: g.fillArc(0, 0, 200, 200, PrevAngle, AngleFromChart.intValue()); ┬ Ωα≈σ±≥Γσ φα≈αδⁿφεπε τφα≈σφΦ ≤πδα ±σΩ≥ε≡α Φ±∩εδⁿτ≤σ≥± τφα≈σφΦσ Φτ ∩σ≡σ∞σφφεΘ PrevAngle. ╤≡ατ≤ ∩ε±δσ ΦφΦ÷ΦαδΦτα÷ΦΦ Γ ²≥≤ ∩σ≡σ∞σφφ≤■ τα∩Φ±√Γασ≥± φ≤δσΓεσ τφα≈σφΦσ. ╩εφσ≈φ√Θ ≤πεδ ±σΩ≥ε≡α ταΣασ≥± ΩαΩ AngleFromChart.intValue(), ≥ε σ±≥ⁿ ≤Ωατ√Γασ≥± τφα≈σφΦσ, ∩εδ≤≈σφφεσ Φτ ∩≡Φφ ≥επε ∩ε ±σ≥Φ ⌠αΘδα Φ±⌡εΣφ√⌡ Σαφφ√⌡. ╧ε±δσ ταΓσ≡°σφΦ ≡Φ±εΓαφΦ ε≈σ≡σΣφεπε ±σΩ≥ε≡α Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√ φα≈αδⁿφεσ τφα≈σφΦσ PrevAngle ≤ΓσδΦ≈ΦΓασ≥± φα ΓσδΦ≈Φφ≤ ≤πδα φα≡Φ±εΓαφφεπε ±σΩ≥ε≡α: PrevAngle += AngleFromChart.intValue(); |